<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <link href="../style.css" rel="stylesheet" type="text/css">
    <title>PETSc: Features</title>
  </head>
  <body>

    <div id="logo">
      <h1>PETSc</h1>
    </div>

    <div id="header">
      <h1>Features</h1>
    </div>

    <hr>

    <div id="sidebar">
      <ul>
        <li><a href="../index.html">Home</a></li>
        <li><a href="../download/index.html">Download</a></li>
        <li>
          <span class="current">Features</span>
          <ul>
            <li><a href="details.html">Component Details</a></li>
            <li><a href="diagram.html">Diagram</a></li>
            <li><a href="gpus.html">GPUs</a></li>
          </ul>
        </li>
        <li><a href="../documentation/index.html">Documentation</a></li>
        <li><a href="../publications/index.html">Applications/Publications</a></li>
        <li><a href="../miscellaneous/index.html">Miscellaneous</a></li>
        <li><a href="../miscellaneous/external.html">External Software</a></li>
        <li><a href="../developers/index.html">Developers Site</a></li>
      </ul>
    </div>

    <div id="main">

      <p>
        PETSc is intended for use in large-scale application projects, many
        ongoing <a href="../publications/index.html">computational science projects</a>
        are built around the PETSc libraries. PETSc is easy to use for
        beginners. Moreover, its careful design allows advanced users to have
        detailed control over the solution process. PETSc includes a large
        suite of parallel linear, nonlinear equation solvers and ODE
        integrators that are easily used in application codes written in C,
        C++, Fortran and Python.  PETSc provides many of the mechanisms
        needed within parallel application codes, such as simple parallel
        matrix and vector assembly routines that allow the overlap of
        communication and computation. In addition, PETSc includes support for
        parallel distributed arrays useful for finite difference methods.
      </p>

      <p>
        Features include:
      </p>

      <ul>
        <li>
          Parallel vectors
          <ul>
            <li>includes code for communicating ghost points</li>
          </ul>
        </li>

        <li>
          Parallel matrices
          <ul>
            <li>several sparse storage formats</li>
            <li>easy, efficient assembly</li>
          </ul>
        </li>

        <li>Scalable parallel preconditioners,  <a href="../documentation/linearsolvertable.html">Listing of preconditioners methods</a></li></li>
        <li>Krylov subspace methods,  <a href="../documentation/linearsolvertable.html">Listing of Krylov methods</a></li>
        <li>Parallel Newton-based nonlinear solvers, as well as a variety other nonlinear solvers such as Anderson mixing</li>
        <li>Parallel timestepping (ODE) solvers with local and global error estimators as well as forward and adjoint sensitivity capabilities</li>
        <li>Support for Nvidia GPUs</li>
        <li>Simple integrated graphics</li>
        <li>Support for a variety of IO options</li>
        <li>Complete documentation</li>
        <li>Automatic profiling of floating point and memory usage</li>
        <li>Consistent user interface</li>
        <li>Intensive error checking</li>
        <li>Portable to Linux, MacOS, UNIX and Windows</li>
        <li>Over one thousand examples</li>
        <li>PETSc is supported and will be actively enhanced for many years</li>
      </ul>

    </div>

    <hr>
</body>
</html>
